home *** CD-ROM | disk | FTP | other *** search
- /*
- * dcompres.c
- * Copyright (c) 1987, DEST Corporation.
- */
-
- /* Standard C Include files */
-
- /* Primary Interface Files */
- #include "Types.h"
- #include "Resources.h"
- #include "Quickdraw.h"
- #include "Windows.h"
- #include "OSUtils.h"
-
- #include "ToolUtils.h"
- #include "TextEdit.h"
- #include "Controls.h"
-
- /* Application-specific Include files */
- #include "tifflib.h"
-
- struct TreeStr
- {
- Int16 type;
- Int16 ptr;
- };
-
- static struct TreeStr whiteTable[] =
- {
- /*
- 0 W */ 0,192, /* W1
- 1 W0 */ 0,115, /* W01
- 2 W00 */ 0,78, /* W001
- 3 W000 */ 0,57, /* W0001
- 4 W0000 */ 0,50, /* W00001
- 5 W00000 */ 0,45, /* W000001
- 6 W000000 */ 0,42, /* W0000001
- 7 W0000000 */ 0,17, /* W00000001
- 8 W00000000 */ 0,16, /* W000000001
- 9 W000000000 */ 0,15, /* W0000000001
- 10 W0000000000 */ 0,14, /* W00000000001
- 11 W00000000000 */ 0,13, /* W000000000001
- 12 W000000000000 */ 1,-2, /*
- 13 W000000000001 */ 1,-1, /* EOL
- 14 W00000000001 */ 1,-2, /*
- 15 W0000000001 */ 1,-2, /*
- 16 W000000001 */ 1,-2, /*
- 17 W00000001 */ 0,31, /* W000000011
- 18 W000000010 */ 0,24, /* W0000000101
- 19 W0000000100 */ 0,21, /* W00000001001
- 20 W00000001000 */ 1,1792, /*
- 21 W00000001001 */ 0,23, /* W000000010011
- 22 W000000010010 */ 1,1984, /*
- 23 W000000010011 */ 1,2048, /*
- 24 W0000000101 */ 0,28, /* W00000001011
- 25 W00000001010 */ 0,27, /* W000000010101
- 26 W000000010100 */ 1,2112, /*
- 27 W000000010101 */ 1,2176, /*
- 28 W00000001011 */ 0,30, /* W000000010111
- 29 W000000010110 */ 1,2240, /*
- 30 W000000010111 */ 1,2304, /*
- 31 W000000011 */ 0,35, /* W0000000111
- 32 W0000000110 */ 0,34, /* W00000001101
- 33 W00000001100 */ 1,1856, /*
- 34 W00000001101 */ 1,1920, /*
- 35 W0000000111 */ 0,39, /* W00000001111
- 36 W00000001110 */ 0,38, /* W000000011101
- 37 W000000011100 */ 1,2368, /*
- 38 W000000011101 */ 1,2432, /*
- 39 W00000001111 */ 0,41, /* W000000011111
- 40 W000000011110 */ 1,2496, /*
- 41 W000000011111 */ 1,2560, /*
- 42 W0000001 */ 0,44, /* W00000011
- 43 W00000010 */ 1,29, /*
- 44 W00000011 */ 1,30, /*
- 45 W000001 */ 0,49, /* W0000011
- 46 W0000010 */ 0,48, /* W00000101
- 47 W00000100 */ 1,45, /*
- 48 W00000101 */ 1,46, /*
- 49 W0000011 */ 1,22, /*
- 50 W00001 */ 0,56, /* W000011
- 51 W000010 */ 0,53, /* W0000101
- 52 W0000100 */ 1,23, /*
- 53 W0000101 */ 0,55, /* W00001011
- 54 W00001010 */ 1,47, /*
- 55 W00001011 */ 1,48, /*
- 56 W000011 */ 1,13, /*
- 57 W0001 */ 0,71, /* W00011
- 58 W00010 */ 0,64, /* W000101
- 59 W000100 */ 0,61, /* W0001001
- 60 W0001000 */ 1,20, /*
- 61 W0001001 */ 0,63, /* W00010011
- 62 W00010010 */ 1,33, /*
- 63 W00010011 */ 1,34, /*
- 64 W000101 */ 0,68, /* W0001011
- 65 W0001010 */ 0,67, /* W00010101
- 66 W00010100 */ 1,35, /*
- 67 W00010101 */ 1,36, /*
- 68 W0001011 */ 0,70, /* W00010111
- 69 W00010110 */ 1,37, /*
- 70 W00010111 */ 1,38, /*
- 71 W00011 */ 0,77, /* W000111
- 72 W000110 */ 0,74, /* W0001101
- 73 W0001100 */ 1,19, /*
- 74 W0001101 */ 0,76, /* W00011011
- 75 W00011010 */ 1,31, /*
- 76 W00011011 */ 1,32, /*
- 77 W000111 */ 1,1, /*
- 78 W001 */ 0,100, /* W0011
- 79 W0010 */ 0,87, /* W00101
- 80 W00100 */ 0,82, /* W001001
- 81 W001000 */ 1,12, /*
- 82 W001001 */ 0,86, /* W0010011
- 83 W0010010 */ 0,85, /* W00100101
- 84 W00100100 */ 1,53, /*
- 85 W00100101 */ 1,54, /*
- 86 W0010011 */ 1,26, /*
- 87 W00101 */ 0,95, /* W001011
- 88 W001010 */ 0,92, /* W0010101
- 89 W0010100 */ 0,91, /* W00101001
- 90 W00101000 */ 1,39, /*
- 91 W00101001 */ 1,40, /*
- 92 W0010101 */ 0,94, /* W00101011
- 93 W00101010 */ 1,41, /*
- 94 W00101011 */ 1,42, /*
- 95 W001011 */ 0,99, /* W0010111
- 96 W0010110 */ 0,98, /* W00101101
- 97 W00101100 */ 1,43, /*
- 98 W00101101 */ 1,44, /*
- 99 W0010111 */ 1,21, /*
- 100 W0011 */ 0,114, /* W00111
- 101 W00110 */ 0,107, /* W001101
- 102 W001100 */ 0,104, /* W0011001
- 103 W0011000 */ 1,28, /*
- 104 W0011001 */ 0,106, /* W00110011
- 105 W00110010 */ 1,61, /*
- 106 W00110011 */ 1,62, /*
- 107 W001101 */ 0,111, /* W0011011
- 108 W0011010 */ 0,110, /* W00110101
- 109 W00110100 */ 1,63, /*
- 110 W00110101 */ 1,0, /*
- 111 W0011011 */ 0,113, /* W00110111
- 112 W00110110 */ 1,320, /*
- 113 W00110111 */ 1,384, /*
- 114 W00111 */ 1,10, /*
- 115 W01 */ 0,155, /* W011
- 116 W010 */ 0,134, /* W0101
- 117 W0100 */ 0,119, /* W01001
- 118 W01000 */ 1,11, /*
- 119 W01001 */ 0,125, /* W010011
- 120 W010010 */ 0,122, /* W0100101
- 121 W0100100 */ 1,27, /*
- 122 W0100101 */ 0,124, /* W01001011
- 123 W01001010 */ 1,59, /*
- 124 W01001011 */ 1,60, /*
- 125 W010011 */ 0,133, /* W0100111
- 126 W0100110 */ 0,130, /* W01001101
- 127 W01001100 */ 0,129, /* W010011001
- 128 W010011000 */ 1,1472, /*
- 129 W010011001 */ 1,1536, /*
- 130 W01001101 */ 0,132, /* W010011011
- 131 W010011010 */ 1,1600, /*
- 132 W010011011 */ 1,1728, /*
- 133 W0100111 */ 1,18, /*
- 134 W0101 */ 0,146, /* W01011
- 135 W01010 */ 0,141, /* W010101
- 136 W010100 */ 0,138, /* W0101001
- 137 W0101000 */ 1,24, /*
- 138 W0101001 */ 0,140, /* W01010011
- 139 W01010010 */ 1,49, /*
- 140 W01010011 */ 1,50, /*
- 141 W010101 */ 0,145, /* W0101011
- 142 W0101010 */ 0,144, /* W01010101
- 143 W01010100 */ 1,51, /*
- 144 W01010101 */ 1,52, /*
- 145 W0101011 */ 1,25, /*
- 146 W01011 */ 0,154, /* W010111
- 147 W010110 */ 0,151, /* W0101101
- 148 W0101100 */ 0,150, /* W01011001
- 149 W01011000 */ 1,55, /*
- 150 W01011001 */ 1,56, /*
- 151 W0101101 */ 0,153, /* W01011011
- 152 W01011010 */ 1,57, /*
- 153 W01011011 */ 1,58, /*
- 154 W010111 */ 1,192, /*
- 155 W011 */ 0,191, /* W0111
- 156 W0110 */ 0,168, /* W01101
- 157 W01100 */ 0,159, /* W011001
- 158 W011000 */ 1,1664, /*
- 159 W011001 */ 0,163, /* W0110011
- 160 W0110010 */ 0,162, /* W01100101
- 161 W01100100 */ 1,448, /*
- 162 W01100101 */ 1,512, /*
- 163 W0110011 */ 0,167, /* W01100111
- 164 W01100110 */ 0,166, /* W011001101
- 165 W011001100 */ 1,704, /*
- 166 W011001101 */ 1,768, /*
- 167 W01100111 */ 1,640, /*
- 168 W01101 */ 0,182, /* W011011
- 169 W011010 */ 0,175, /* W0110101
- 170 W0110100 */ 0,172, /* W01101001
- 171 W01101000 */ 1,576, /*
- 172 W01101001 */ 0,174, /* W011010011
- 173 W011010010 */ 1,832, /*
- 174 W011010011 */ 1,896, /*
- 175 W0110101 */ 0,179, /* W01101011
- 176 W01101010 */ 0,178, /* W011010101
- 177 W011010100 */ 1,960, /*
- 178 W011010101 */ 1,1024, /*
- 179 W01101011 */ 0,181, /* W011010111
- 180 W011010110 */ 1,1088, /*
- 181 W011010111 */ 1,1152, /*
- 182 W011011 */ 0,190, /* W0110111
- 183 W0110110 */ 0,187, /* W01101101
- 184 W01101100 */ 0,186, /* W011011001
- 185 W011011000 */ 1,1216, /*
- 186 W011011001 */ 1,1280, /*
- 187 W01101101 */ 0,189, /* W011011011
- 188 W011011010 */ 1,1344, /*
- 189 W011011011 */ 1,1408, /*
- 190 W0110111 */ 1,256, /*
- 191 W0111 */ 1,2, /*
- 192 W1 */ 0,206, /* W11
- 193 W10 */ 0,199, /* W101
- 194 W100 */ 0,196, /* W1001
- 195 W1000 */ 1,3, /*
- 196 W1001 */ 0,198, /* W10011
- 197 W10010 */ 1,128, /*
- 198 W10011 */ 1,8, /*
- 199 W101 */ 0,205, /* W1011
- 200 W1010 */ 0,202, /* W10101
- 201 W10100 */ 1,9, /*
- 202 W10101 */ 0,204, /* W101011
- 203 W101010 */ 1,16, /*
- 204 W101011 */ 1,17, /*
- 205 W1011 */ 1,4, /*
- 206 W11 */ 0,214, /* W111
- 207 W110 */ 0,209, /* W1101
- 208 W1100 */ 1,5, /*
- 209 W1101 */ 0,213, /* W11011
- 210 W11010 */ 0,212, /* W110101
- 211 W110100 */ 1,14, /*
- 212 W110101 */ 1,15, /*
- 213 W11011 */ 1,64, /*
- 214 W111 */ 0,216, /* W1111
- 215 W1110 */ 1,6, /*
- 216 W1111 */ 1,7
- };
-
-
- static struct TreeStr blackTable[] =
- {
- /*
- 0 B */ 0,206, /* B1
- 1 B0 */ 0,203, /* B01
- 2 B00 */ 0,200, /* B001
- 3 B000 */ 0,195, /* B0001
- 4 B0000 */ 0,152, /* B00001
- 5 B00000 */ 0,101, /* B000001
- 6 B000000 */ 0,34, /* B0000001
- 7 B0000000 */ 0,9, /* B00000001
- 8 B00000000 */ 1,-2, /*
- 9 B00000001 */ 0,23, /* B000000011
- 10 B000000010 */ 0,16, /* B0000000101
- 11 B0000000100 */ 0,13, /* B00000001001
- 12 B00000001000 */ 1,1792, /*
- 13 B00000001001 */ 0,15, /* B000000010011
- 14 B000000010010 */ 1,1984, /*
- 15 B000000010011 */ 1,2048, /*
- 16 B0000000101 */ 0,20, /* B00000001011
- 17 B00000001010 */ 0,19, /* B000000010101
- 18 B000000010100 */ 1,2112, /*
- 19 B000000010101 */ 1,2176, /*
- 20 B00000001011 */ 0,22, /* B000000010111
- 21 B000000010110 */ 1,2240, /*
- 22 B000000010111 */ 1,2304, /*
- 23 B000000011 */ 0,27, /* B0000000111
- 24 B0000000110 */ 0,26, /* B00000001101
- 25 B00000001100 */ 1,1856, /*
- 26 B00000001101 */ 1,1920, /*
- 27 B0000000111 */ 0,31, /* B00000001111
- 28 B00000001110 */ 0,30, /* B000000011101
- 29 B000000011100 */ 1,2368, /*
- 30 B000000011101 */ 1,2432, /*
- 31 B00000001111 */ 0,33, /* B000000011111
- 32 B000000011110 */ 1,2496, /*
- 33 B000000011111 */ 1,2560, /*
- 34 B0000001 */ 0,68, /* B00000011
- 35 B00000010 */ 0,49, /* B000000101
- 36 B000000100 */ 0,38, /* B0000001001
- 37 B0000001000 */ 1,18, /*
- 38 B0000001001 */ 0,44, /* B00000010011
- 39 B00000010010 */ 0,41, /* B000000100101
- 40 B000000100100 */ 1,52, /*
- 41 B000000100101 */ 0,43, /* B0000001001011
- 42 B0000001001010 */ 1,640, /*
- 43 B0000001001011 */ 1,704, /*
- 44 B00000010011 */ 0,48, /* B000000100111
- 45 B000000100110 */ 0,47, /* B0000001001101
- 46 B0000001001100 */ 1,768, /*
- 47 B0000001001101 */ 1,832, /*
- 48 B000000100111 */ 1,55, /*
- 49 B000000101 */ 0,61, /* B0000001011
- 50 B0000001010 */ 0,56, /* B00000010101
- 51 B00000010100 */ 0,53, /* B000000101001
- 52 B000000101000 */ 1,56, /*
- 53 B000000101001 */ 0,55, /* B0000001010011
- 54 B0000001010010 */ 1,1280, /*
- 55 B0000001010011 */ 1,1344, /*
- 56 B00000010101 */ 0,60, /* B000000101011
- 57 B000000101010 */ 0,59, /* B0000001010101
- 58 B0000001010100 */ 1,1408, /*
- 59 B0000001010101 */ 1,1472, /*
- 60 B000000101011 */ 1,59, /*
- 61 B0000001011 */ 0,67, /* B00000010111
- 62 B00000010110 */ 0,64, /* B000000101101
- 63 B000000101100 */ 1,60, /*
- 64 B000000101101 */ 0,66, /* B0000001011011
- 65 B0000001011010 */ 1,1536, /*
- 66 B0000001011011 */ 1,1600, /*
- 67 B00000010111 */ 1,24, /*
- 68 B00000011 */ 0,86, /* B000000111
- 69 B000000110 */ 0,77, /* B0000001101
- 70 B0000001100 */ 0,72, /* B00000011001
- 71 B00000011000 */ 1,25, /*
- 72 B00000011001 */ 0,76, /* B000000110011
- 73 B000000110010 */ 0,75, /* B0000001100101
- 74 B0000001100100 */ 1,1664, /*
- 75 B0000001100101 */ 1,1728, /*
- 76 B000000110011 */ 1,320, /*
- 77 B0000001101 */ 0,81, /* B00000011011
- 78 B00000011010 */ 0,80, /* B000000110101
- 79 B000000110100 */ 1,384, /*
- 80 B000000110101 */ 1,448, /*
- 81 B00000011011 */ 0,85, /* B000000110111
- 82 B000000110110 */ 0,84, /* B0000001101101
- 83 B0000001101100 */ 1,512, /*
- 84 B0000001101101 */ 1,576, /*
- 85 B000000110111 */ 1,53, /*
- 86 B000000111 */ 0,100, /* B0000001111
- 87 B0000001110 */ 0,93, /* B00000011101
- 88 B00000011100 */ 0,90, /* B000000111001
- 89 B000000111000 */ 1,54, /*
- 90 B000000111001 */ 0,92, /* B0000001110011
- 91 B0000001110010 */ 1,896, /*
- 92 B0000001110011 */ 1,960, /*
- 93 B00000011101 */ 0,97, /* B000000111011
- 94 B000000111010 */ 0,96, /* B0000001110101
- 95 B0000001110100 */ 1,1024, /*
- 96 B0000001110101 */ 1,1088, /*
- 97 B000000111011 */ 0,99, /* B0000001110111
- 98 B0000001110110 */ 1,1152, /*
- 99 B0000001110111 */ 1,1216, /*
- 100 B0000001111 */ 1,64, /*
- 101 B000001 */ 0,127, /* B0000011
- 102 B0000010 */ 0,104, /* B00000101
- 103 B00000100 */ 1,13, /*
- 104 B00000101 */ 0,118, /* B000001011
- 105 B000001010 */ 0,111, /* B0000010101
- 106 B0000010100 */ 0,108, /* B00000101001
- 107 B00000101000 */ 1,23, /*
- 108 B00000101001 */ 0,110, /* B000001010011
- 109 B000001010010 */ 1,50, /*
- 110 B000001010011 */ 1,51, /*
- 111 B0000010101 */ 0,115, /* B00000101011
- 112 B00000101010 */ 0,114, /* B000001010101
- 113 B000001010100 */ 1,44, /*
- 114 B000001010101 */ 1,45, /*
- 115 B00000101011 */ 0,117, /* B000001010111
- 116 B000001010110 */ 1,46, /*
- 117 B000001010111 */ 1,47, /*
- 118 B000001011 */ 0,126, /* B0000010111
- 119 B0000010110 */ 0,123, /* B00000101101
- 120 B00000101100 */ 0,122, /* B000001011001
- 121 B000001011000 */ 1,57, /*
- 122 B000001011001 */ 1,58, /*
- 123 B00000101101 */ 0,125, /* B000001011011
- 124 B000001011010 */ 1,61, /*
- 125 B000001011011 */ 1,256, /*
- 126 B0000010111 */ 1,16, /*
- 127 B0000011 */ 0,151, /* B00000111
- 128 B00000110 */ 0,138, /* B000001101
- 129 B000001100 */ 0,131, /* B0000011001
- 130 B0000011000 */ 1,17, /*
- 131 B0000011001 */ 0,135, /* B00000110011
- 132 B00000110010 */ 0,134, /* B000001100101
- 133 B000001100100 */ 1,48, /*
- 134 B000001100101 */ 1,49, /*
- 135 B00000110011 */ 0,137, /* B000001100111
- 136 B000001100110 */ 1,62, /*
- 137 B000001100111 */ 1,63, /*
- 138 B000001101 */ 0,146, /* B0000011011
-
- 139 B0000011010 */ 0,143, /* B00000110101
-
- 140 B00000110100 */ 0,142, /* B000001101001
- 141 B000001101000 */ 1,30, /*
- 142 B000001101001 */ 1,31, /*
- 143 B00000110101 */ 0,145, /* B000001101011
- 144 B000001101010 */ 1,32, /*
- 145 B000001101011 */ 1,33, /*
- 146 B0000011011 */ 0,150, /* B00000110111
- 147 B00000110110 */ 0,149, /* B000001101101
- 148 B000001101100 */ 1,40, /*
- 149 B000001101101 */ 1,41, /*
- 150 B00000110111 */ 1,22, /*
- 151 B00000111 */ 1,14, /*
- 152 B00001 */ 0,156, /* B000011
- 153 B000010 */ 0,155, /* B0000101
- 154 B0000100 */ 1,10, /*
- 155 B0000101 */ 1,11, /*
- 156 B000011 */ 0,194, /* B0000111
- 157 B0000110 */ 0,173, /* B00001101
- 158 B00001100 */ 0,160, /* B000011001
- 159 B000011000 */ 1,15, /*
- 160 B000011001 */ 0,168, /* B0000110011
- 161 B0000110010 */ 0,165, /* B00001100101
- 162 B00001100100 */ 0,164, /* B000011001001
- 163 B000011001000 */ 1,128, /*
- 164 B000011001001 */ 1,192, /*
- 165 B00001100101 */ 0,167, /* B000011001011
- 166 B000011001010 */ 1,26, /*
- 167 B000011001011 */ 1,27, /*
- 168 B0000110011 */ 0,172, /* B00001100111
- 169 B00001100110 */ 0,171, /* B000011001101
- 170 B000011001100 */ 1,28, /*
- 171 B000011001101 */ 1,29, /*
- 172 B00001100111 */ 1,19, /*
- 173 B00001101 */ 0,187, /* B000011011
- 174 B000011010 */ 0,180, /* B0000110101
- 175 B0000110100 */ 0,177, /* B00001101001
- 176 B00001101000 */ 1,20, /*
- 177 B00001101001 */ 0,179, /* B000011010011
- 178 B000011010010 */ 1,34, /*
- 179 B000011010011 */ 1,35, /*
- 180 B0000110101 */ 0,184, /* B00001101011
- 181 B00001101010 */ 0,183, /* B000011010101
- 182 B000011010100 */ 1,36, /*
- 183 B000011010101 */ 1,37, /*
- 184 B00001101011 */ 0,186, /* B000011010111
- 185 B000011010110 */ 1,38, /*
- 186 B000011010111 */ 1,39, /*
- 187 B000011011 */ 0,193, /* B0000110111
- 188 B0000110110 */ 0,190, /* B00001101101
- 189 B00001101100 */ 1,21, /*
- 190 B00001101101 */ 0,192, /* B000011011011
- 191 B000011011010 */ 1,42, /*
- 192 B000011011011 */ 1,43, /*
- 193 B0000110111 */ 1,0, /*
- 194 B0000111 */ 1,12, /*
- 195 B0001 */ 0,199, /* B00011
- 196 B00010 */ 0,198, /* B000101
- 197 B000100 */ 1,9, /*
- 198 B000101 */ 1,8, /*
- 199 B00011 */ 1,7, /*
- 200 B001 */ 0,202, /* B0011
- 201 B0010 */ 1,6, /*
- 202 B0011 */ 1,5, /*
- 203 B01 */ 0,205, /* B011
- 204 B010 */ 1,1, /*
- 205 B011 */ 1,4, /*
- 206 B1 */ 0,208, /* B11
- 207 B10 */ 1,3, /*
- 208 B11 */ 1,2
- };
-
-
- /* ------------------------------------------------------------------- */
-
- /* decode one row, update pointers */
-
- OSErr HDecode(dstPtr, srcPtr, imageWidth)
- Ptr *srcPtr;
- Ptr *dstPtr;
- Int16 imageWidth;
- {
- Int16 srcBit;
- Int16 dstBit;
- Int8 srcByte;
- UInt8 dstByte;
- Int16 srcBitCount;
- Int16 dstBitCount;
- Boolean whiteRun;
- Int16 index;
- Int16 runLength;
- Int16 leftToAdd;
- Int16 bytesLeft;
- OSErr error;
- Boolean mustReadTC;
-
- bytesLeft = (imageWidth + 7) / 8;
- srcBit = 0;
- dstBit = 0;
- srcBitCount = 0;
- dstBitCount = 0;
- dstByte = 0;
- whiteRun = TRUE;
- index = 0;
- error = noErr;
- mustReadTC = FALSE;
-
- while ((mustReadTC || dstBit < imageWidth) && error == noErr)
- {
- index = 0;
- while ((whiteRun ? whiteTable[index].type : blackTable[index].type)
- == 0 && error == noErr)
- {
- if (srcBitCount == 0)
- {
- srcByte = *(*srcPtr)++;
- srcBitCount = 8;
- }
- if (srcByte < 0)
- {
- index =
- whiteRun ? whiteTable[index].ptr : blackTable[index].ptr;
- }
- else
- index++;
- srcByte = srcByte << 1;
- srcBitCount--;
- }
- if ((whiteRun ? whiteTable[index].ptr : blackTable[index].ptr) < 0)
- break;
- runLength = whiteRun ? whiteTable[index].ptr : blackTable[index].ptr;
- if (runLength < 0) error = -1000;
- mustReadTC = runLength >= 64;
- /* add run */
- dstBit += runLength;
- if (dstBit > imageWidth) error = -1003;
- leftToAdd = runLength;
- while (leftToAdd > 0 && dstBitCount < 8 && error == noErr)
- {
- dstByte = (dstByte << 1) | (whiteRun ? 0 : 1);
- dstBitCount++;
- leftToAdd--;
- }
- if (dstBitCount == 8 && error == noErr)
- {
- if (bytesLeft-- <= 0)
- error = -1001;
- else
- *(*dstPtr)++ = dstByte;
- dstBitCount = 0;
- dstByte = 0;
- }
- while (leftToAdd >= 8 && error == noErr)
- {
- if (bytesLeft-- <= 0)
- error = -1001;
- else
- *(*dstPtr)++ = whiteRun ? 0 : 0xff;
- leftToAdd -= 8;
- }
- while (leftToAdd > 0 && error == noErr)
- {
- dstByte = (dstByte << 1) | (whiteRun ? 0 : 1);
- dstBitCount++;
- leftToAdd--;
- }
- if (runLength < 64) whiteRun = !whiteRun;
- }
-
-
- if (dstBitCount > 0 && error == noErr)
- {
- dstByte = dstByte << (8 - dstBitCount);
- if (bytesLeft-- <= 0)
- error = -1001;
- else
- *(*dstPtr)++ = dstByte;
- }
-
- return(error);
- }
-
- /* ------------------------------------------------------------------- */
-